home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / pfit.src < prev    next >
Text File  |  1994-01-04  |  2KB  |  45 lines

  1. %%HP: T(3)A(R)F(.);
  2. @ Short & Fast PolyFitter, by Joe Horn
  3. @ BYTES: 704.5  #2275h
  4. DIR
  5.   P1                                     @ sample input #1
  6. [[ -2 -3 ]
  7.  [ 0 7 ]
  8.  [ 1 6 ]
  9.  [ 2 9 ]]
  10.   P2                                     @ sample input #2
  11. [[ -1 3 ]
  12.  [ 0 2 ]
  13.  [ 1 4 ]
  14.  [ 2 0 ]
  15.  [ 3 5 ]]
  16.   PFIT                                   @ a = matrix of points
  17.     \<< DUP SIZE 1 GET \-> a s           @ s = number of points
  18.       \<< 1 s
  19.         FOR j a { j 2 } GET              @ make array of Y values
  20.         NEXT s \->ARRY 1 s
  21.         FOR j a { j 1 } GET s 1 - 0      @ make matrix of X powers
  22.           FOR k DUP k ^ SWAP -1
  23.           STEP DROP
  24.         NEXT { s s } \->ARRY
  25.         SWAP DUP2 OVER /                 @ solve system of equations
  26.         DUP 5 ROLLD RSD SWAP / +         @ + RSD for higher accuracy
  27.       \>>
  28.     \>>
  29.   SHOP @ Graphically Show Points & Polynomial Fit
  30.     \<< STO\GS ERASE { # 0h # 0h } PVIEW @ SigmaDAT = point array
  31.       MIN\GS V\-> MAX\GS V\->            @ Find mins & maxes
  32.       ROT OVER - 1.24 * OVER + YRNG      @ Adjust Y for menu area
  33.       OVER - 1.03 * OVER + XRNG          @  and set YRNG & XRNG
  34.       1 N\GS
  35.       FOR j PICT \GSDAT DUP { j 1 } GET  @ get next X and Y and turn
  36.         SWAP { j 2 } GET R\->C           @  into (X,Y)
  37.         GROB 5 5 F1F070B011 REPL         @ display arrow there
  38.       NEXT RCL\GS PFIT                   @ Find polynomial fit
  39.       OBJ\-> 0 SWAP OBJ\-> + 2           @ Create algebraic polynomial
  40.       FOR j 'X' * j ROLL + -1            @  using Horner's Method
  41.       STEP STEQ FUNCTION DRAW DRAX LABEL @ plot it with labeled axes
  42.       { } PVIEW { \GSDAT PPAR EQ } PURGE @ freeze display & clean up
  43.     \>>
  44. END
  45.